package controller;

import java.io.File;
import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.util.regex.Pattern;
import java.util.regex.Matcher;


/**
 * Servlet implementation class XuLyDangKy
 */
public class XuLyDangKy extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public XuLyDangKy() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
//		Xu ly thong tin ve dang nhap
//		String email = null;
//		String password = null;
//		String re_password = null;
//		String name = null;
//		String sex = null;
//		loi khi up hinh len, chua sua duoc , tham khao bai hong
		
//		getServletContext().getRealPath("thu muc chua file upload");
		
///		MultipartRequest thuc hien viec upload voi cac thong tin request, thu muc chua, dung luong file quy dinh
		
//		getParameter lay thong tin tu trang jsp sang xu ly o trang servlet
		String email = request.getParameter("email");
		String password = request.getParameter("password");
		String re_password = request.getParameter("re_password");
		String phone = request.getParameter("phone");
		String homeadd = request.getParameter("homeadd");


		
//		bat loi email
//		khai báo biến String lưu trử các lổi liên quan đến email
		String[] emails = new String[]{"abc@gmail.com", "abc1@gmail.com"};
		String email_err = "";
		if(email == null){
			email_err += "Bạn chưa nhập địa chỉ email.";
		}
////		loại bỏ các khoảng trắng ở 2 đầu, kiểm tra email ko có dữ liệu
		else {
//			ham trim() cắt bỏ hết khoảng trắng trong chuổi String
			email = email.trim();
//			ham equals() so sanh email nhap vao va khoảng trống "" nếu ko nhập gì vào email sẻ báo lổi
			if(email.equals(""))
				email_err += "Bạn chưa nhập địa chỉ email.";
//			kiểm tra email có đúng format ko. email phai có @ và .đuôi
			else{
				Pattern patternObject = Pattern.compile("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$");
				Matcher matcherObject = patternObject.matcher(email);
//				kiểm tra email đúng format có tồn tại chưa?
				if(!matcherObject.matches()){
//				nếu ko đúng format thì tra về địa chỉ email ko hợp lệ
					email_err += "Địa chỉ email không hợp lệ";
				} else {
//					ngược lại nếu email đã đúng format ta so sánh email và emails(mang emails có trước) nếu bằng nhau thì xuất ra email đã tồn tại
					for(String em : emails){
						if(em.equals(email)){
							email_err += "Địa chỉ email đã tồn tại.";
						break;
						}
					}
				}
			}
		}
//		bắt lổi password
		String password_err = "";
		if(password == null || re_password == null){
			password_err += "Bạn chưa nhập password";
		}else {
			password = password.trim();
			re_password = re_password.trim();
			if(password.equals("") || re_password.equals("")){
				password_err += "Bạn chưa nhập password";
			}else {
				if(!password.equals(re_password)){
					password_err += "Password không giống nhau";
				}
			}
		}

////		bắt lổi số điện thoại
		String phone_err = new String();
		if(phone == null || phone.isEmpty()){
			phone_err += "Bạn chưa nhập số phone.";
		} else {
			Pattern pt = Pattern.compile("\\d{10}");
			Matcher mt = pt.matcher(phone);
			if(mt.matches()){
				phone_err = "";
			} else {
				phone_err += "Bạn nhập sai số phone";
			}
		}
		
////		bat loi hinh anh
		
		
////		bat loi homeadd
		String homeadd_err = new String();
		if(homeadd == null || homeadd.isEmpty()){
			homeadd_err += "Bạn chưa nhập địa chỉ.";
		}
		
//		kết thúc kiểm tra báo lổi, báo lỗi
		String url = "";
//		set(luu tàm thời) 
		request.setAttribute("email", email);
		request.setAttribute("password", password);
		request.setAttribute("re_password", re_password);
		request.setAttribute("phone", phone);
		request.setAttribute("homeadd", homeadd);
		
//		nếu email_err có lổi (lớn hơn 0) trả về trang dangky.jsp
		if(email_err.length() > 0 || password_err.length() > 0 || 
				 phone_err.length() > 0 || homeadd_err.length() >0){
//		if(email_err.length() > 0 || password_err.length() > 0){
			url = "/DanhNhapDangKy.jsp";
			request.setAttribute("email_err", email_err);
			request.setAttribute("password_err", password_err);
			request.setAttribute("phone_err", phone_err);
			request.setAttribute("homeadd_err", homeadd_err);
			
//			chuyển trang (thành công hoặc báo lỗi)
			RequestDispatcher rd = getServletContext().getRequestDispatcher(url);
//			gọi chuyển trang
			rd.forward(request, response);
		} else {
			response.sendRedirect("shop");
		}
		

	}

}
